package com.mailbox.mailbox.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mailbox.mailbox.domain.Message;
import com.mailbox.mailbox.domain.responsePojo.ReturnMessage;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * @author Administrator
 * @description 针对表【message】的数据库操作Mapper
 * @createDate 2022-05-15 08:45:05
 * @Entity generator.domain.Message
 */
@Mapper
@Repository
public interface MessageMapper extends BaseMapper<Message> {

    /**
     * 查询所有的数量集
     * @return
     */
    Integer findCounts();

    /**
     * 查询所有的留言
     * @return
     */
    List<Message> findAllMessages(Integer page, Integer size);




    /**
     * 根据类型所有的留言
     * @param type 类型
     * @param page 页数
     * @param size 每页的多少
     * @return
     */
    List<Message> findSuchMessageType(String type,Integer page,Integer size);

    /**
     * 根据时间区间查询留言
     * @param startTime 开始的时间
     * @param endTime 结束的时间
     * @param page 页数
     * @param size 每页的多少
     * @return
     */
    List<Message> findSuchMessageTime(String startTime,String endTime,Integer page,Integer size);

    /**
     * 根据时间区间和类型查询留言
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param type 类型
     * @param page 页数
     * @param size 每页的个数
     * @return
     */
    List<Message> findSuchMessage(String startTime,String endTime,String type,Integer page,Integer size);

    /**
     * 根据电话查询留言
     * @param phone 电话
     * @param page 页数
     * @param size 每页的多少
     * @return
     */
    List<Message> selectByPhone(String phone,Integer page,Integer size);

    /**
     * 根据姓名查询留言
     * @param name 姓名
     * @param page 页数
     * @param size 每页的多少
     * @return
     */
    List<Message> selectByName(String name,Integer page,Integer size);

    /**
     * 根据姓名查询留言
     * @param email 邮箱
     * @param page 页数
     * @param size 每页的多少
     * @return
     */
    List<Message> selectByEmail(String email,Integer page,Integer size);

    /**
     * 根绝内容化查询留言
     * @param content 内容
     * @param page 页数
     * @param size 每页的多少
     * @return
     */
    List<Message> selectByContent(String content,Integer page,Integer size);

    /**
     * 批量删除留言
     * @param ids
     * @return
     */
    Boolean deleteMessages(String ids);

    /**
     * 修改所有的留言为未回复
     */
    void updateAllUnSee();

    /**
     * 查询内容的数量
     * @param content 内容
     * @return
     */
    Integer selectByContentCounts(String content);

    /**
     * 根据邮箱查询数量
     * @param email 邮箱
     * @return
     */
    Integer selectByEmailCounts(String email);

    /**
     * 根据邮箱查询数量
     * @param name 姓名
     * @return
     */
    Integer selectByNameCounts(String name);

    /**
     * 查询电话相同的个数
     * @param phone 电话
     * @return
     */
    Integer selectByPhoneCounts(String phone);

    /**
     * 根据类型查询个数
     * @param type 类型
     * @return
     */
    Integer selectByTypeCounts(String type);

    /**
     * 根据类型查询个数
     * @param type 类型
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return
     */
    Integer selectBySuchCounts(String type,String startTime,String endTime);

    /**
     * 根据时间查询个数
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return
     */
    Integer selectByTimeCounts(String startTime,String endTime);

    /**
     * 查看各种类型的留言
     * @param page 页数
     * @param size 每页的多少
     * @param status 状态
     * @return
     */
    List<Message> findUnSee(Integer page,Integer size,Integer status);



    List<Message> findNotOpen();

    List<Message> findOpen();

    List<Message> findReplyMsg();

    List<Message> findNotReplyMsg();

    Long countNotOpen();

    Long countOpen();

    Long countReplyMsg();

    Long countNotReplyMsg();





}




